home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
SIMPLE.ASM
< prev
next >
Wrap
Assembly Source File
|
1998-03-06
|
4KB
|
121 lines
;-----------------------------------------------------
; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ »α«ßΓ«⌐ ºá¼Ñ¡δ
; ß«ú½áß¡« ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
; --------> ñ½∩ 16-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <--------
; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
;-----------------------------------------------------
; Åáαá¼ÑΓαδ »α¿ ó맮óÑ »ÑαÑñáεΓß∩ ó ßΓφ¬Ñ :
; æ¼ÑΘÑ¡¿Ñ ÉẼÑα Å Ç É Ç î à Æ É
; NEAR FAR
; 2 4 4 FAR-áñαÑß ¬½ετá
; 6 8 4 FAR-áñαÑß í½«¬á ñá¡¡δσ
; 10 12 4 FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
; 14 16 2 諽¿τÑßΓó« Φ¿ΣαπѼδσ í½«¬«ó
;*16 18 2 ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
; (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
;-----------------------------------------------------
; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ ¡á »Ñαóδ⌐ íá⌐Γ
; »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
; - áñαÑßá ¬½ετá ¿ Γáí½¿µδ ºá¼Ñ¡ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
; - ßτÑΓτ¿¬ Φ¿ΣαπѼδσ í½«¬«ó αáóÑ¡ 0;
;-----------------------------------------------------
; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
;-----------------------------------------------------
; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
; - æ¿¼ó«½ KeySize:
; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
; ¬½ετ αẼÑα«¼ ó 32 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γá;
; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
; Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
; ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
; αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
; Σπ¡¬µ¿¿.
;------------------------------------------------------
; çá¼Ñτá¡¿∩:
; 1.çáΦ¿Σα«óá¡¿Ñ ¿½¿ αáßΦ¿Σα«óá¡¿Ñ ºáñáÑΓß∩ »ÑαÑñáτÑ⌐
; ß««ΓóÑΓßΓóπεΘÑú« áñαÑßá ¬½ετá - »«α∩ñ«¬ φ½Ñ¼Ñ¡Γ«ó
; ó ¬½ετáσ ºáΦ¿Σα«óá¡¿∩ ¿ αáßΦ¿Σα«óá¡¿∩ óºá¿¼¡«
; «íαáΓ¡δ⌐.
; 2.æ«ú½áß¡« âÄæÆ 28147-89 φëà ¼«ñπ½∞ ¼«ªÑΓ ¿ß»«½∞-
; º«óáΓ∞ß∩ Γ«½∞¬« ñ½∩ Φ¿Σα«óá¡¿∩ ¬½ετÑó«⌐ ¿¡Σ«α¼áµ¿¿
; (¿ ß¿¡σα«»«ß佬¿ ñ½∩ úá¼¼¿α«óá¡¿∩).
;-----------------------------------------------------
;
wptr EQU <word ptr>
;
IFNDEF KeySize
_keysize EQU 32 ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ELSE
IFDIF KeySize,<>
_keysize EQU KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ENDIF
ENDIF
;
.model small,C
.code $gost
extrn gost:near
simple proc
public simple
; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
a=8 ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
IF (TYPE simple) EQ 0FFFEh
a=a+2 ; Ñß½¿ simple - far-»α«µÑñπαá
ENDIF
; çáñáѼ ß¼ÑΘÑ¡¿Ñ áαúπ¼Ñ¡Γ«ó ó ßΓφ¬Ñ
;
key= 2+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ¬½ετá
syn= 6+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ñá¡¡δσ
chg= 10+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá Γáí½. ºá¼Ñ¡
len= 14+a ; ß¼ÑΘÑ¡¿Ñ ßτÑΓτ¿¬á í½«¬«ó
IFNDEF _keysize
keylen= 16+a
ENDIF
;
; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½. Turbo C
push BP
push DS ; φΓ« ¡Ñ óßÑúñá «í∩ºáΓѽ∞¡«
push SI
push DI
; ìáßΓα«⌐¬á αáí«τ¿σ αÑú¿ßΓα«ó
mov BP,SP ; ßΓφ¬«óδ⌐ ¬áñα
lds BX,chg[BP] ; Γáí½¿µá ºá¼Ñ¡
; çáúαπº¬á í½«¬á ó αÑú¿ßΓαδ
circle: les SI,syn[BP] ; ºáúαπº¬á áñα.ß-»«c佬¿
mov AX,ES:[SI] ; AX <- ¼½áñΦÑÑ ß½«ó« N1
mov DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« N1
mov DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« N2
mov CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« N2
; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ »α«ßΓπε ºá¼Ñ¡π
les SI,key[BP]
IFDEF _keysize
mov BP,CX ; BP <- ßΓáαΦÑÑ ß½«ó« S2
mov CX,_keysize ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
ELSE
mov BP,keylen[BP];CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
xchg BP,CX ; BP <- ßΓáαΦÑÑ ß½«ó« S2
ENDIF
call gost
mov CX,BP
mov BP,SP
; çỿß∞ αѺπ½∞ΓáΓá ¡á ¼ÑßΓ«
les SI,syn[BP] ; ºáúαπº¬á áñαÑßá ß¿¡σα«»«»δ½¬¿
mov ES:[SI],DI ; º á ¡ « ß ¿ ¼
mov ES:2[SI],CX ; α Ñ º π ½ ∞ Γ á Γ
mov ES:4[SI],AX ; ¡ á Ñ ú «
mov ES:6[SI],DX ; ¼ Ñ ß Γ « !!!
; Åα«óÑα¬á ¡á ¬«¡Ñµ µ¿¬½á
add wptr syn[BP],8; ¬«ααѬµ¿∩ áñαÑßá ¡áº¡.
dec wptr len[BP]; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
jnz circle ; µ¿¬½¿¼ß∩
; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó
pop DI
pop SI
pop DS
pop BP
ret
simple endp
end